<?php

/**
 * sesion actions.
 *
 * @package    dentist
 * @subpackage sesion
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class sesionActions extends sfActions {

    public function executeLogin(sfWebRequest $request) {
        $this->form = new LoginForm();

        // Si viene por POST se procesa el formulario
        if ($request->isMethod('post')) {

            // se enlaza el formulario con los parametros
            $this->form->bind($request->getParameter('usuario'));

            // se valida el formulario
            if ($this->form->isValid()) {
                $usuario = $this->form->getValues();

                /* Busco el usuario en la BD por el correo */
                $Usuario = UsuarioPeer::getUsuario($usuario['correo']);

                /* Si el usuario recuperado de la BD no está vacio y las claves coinciden entonces lo logueo */
                if ($Usuario != null && strcmp(md5($usuario['clave']), $Usuario->getClave()) == 0) {

                    // Se loguea el usuario
                    $this->getUser()->setAuthenticated(true);

                    /* Le agrego a la session el email como atributo y el id del usuario */
                    $this->getUser()->setAttribute('correo', $Usuario->getCorreo());
                    $this->getUser()->setAttribute('nombre', $Usuario->getNombre());
                    $this->getUser()->setAttribute('id', $Usuario->getId());

                    /* Valido si el usuario es un admin harcodeado y dependiendo si es o no agrego las credenciales */
//                    if ($usuario['correo'] == 'admin@admin.com') {
//                        //$this->getUser()->addCredential('usuario');
//                        $this->getUser()->addCredential('administrador');
//                    } else {
                    $this->getUser()->addCredential('usuario');
//                    }
                } else {
                    $this->getUser()->setFlash("error", "Usuario o clave incorrecto.");
                    $this->redirect("sesion/login");
                }
            } else {
                $this->getUser()->setFlash("error", "Usuario o clave incorrecto.");
                $this->redirect("sesion/login");
            }
            
            // Login OK
            $this->redirect("panel/index");
        } else {
            return 'Form';
        }
    }

    public function executeLogout(sfWebRequest $request) {
        // cierro la sesión del usuario
        $this->getUser()->setAuthenticated(false);
        
        $this->redirect("home/index");
    }

}
